'use strict'

const http = require("http");

let html = `
    <!DOCTYPE html>
    </html>
        <head>
            <title>First Server</title>
        </head>
        <body>
            <div>Node.js in service.</div>
        </body>
    </html>
`

let routerTable = {
    '/':async(request, response)=>{
        response.setHeader('content-type', 'text/plain; charset=utf-8')
        response.end(html)

    },
    '/x/y': async(request,response)=>{
        response.end('--ok--')
    },
    '/x/y/z': async(request, response)=>{

        let bufferList = []
        let totalLength = 0
        request.on('data', chunk => {
            totalLength += chunk.length
            bufferList.push(chunk)
        })
    
        let bodyData = null
    
        request.on('end', ()=>{
            if(bufferList.length>0)
                bodyData = Buffer.concat(bufferList, totalLength)
            
            bufferList = [];
            if(bodyData){
                response.setHeader('content-type', 'text/plain; charset=utf-8')
                response.end(bodyData)
            }else{
                response.end();
            }
        })
    }
}

let serv = http.createServer((request, response) => {

    if(routerTable[ request.url ]===undefined){
        response.statusCode = 404
        response.end('page not found')
        return
    }

    routerTable[ request.url ](request, response)
})

serv.listen(3456)